﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace csis.ImmediatorClasses
{
	public class ImmediatorOptions
	{
		public ImmediatorOptions()
		{
			this.ScriptArguments = new List<string>();
			this.CompilerOptions = new CompilerOptions();
		}

		/// <summary>
		/// Specifies optional user script arguments.
		/// </summary>
		public List<string> ScriptArguments { get; private set; }

		/// <summary>
		/// Specifies that csis does not wait until the script is done.
		/// </summary>
		public bool NoWait { get; set; }

		/// <summary>
		/// Specifies that the first input file is passed to the
		/// script as a parameter.
		/// </summary>
		public bool FirstFileAsArgument { get; set; }
		/// <summary>
		/// Specifies that all input files are passed to the script
		/// as parameters.
		/// </summary>
		public bool AllFilesAsArguments { get; set; }

		/// <summary>
		/// Specifies the environment variable in which the path
		/// of the first input file is stored.
		/// Not used if null.
		/// </summary>
		public string FirstFileEnvVar { get; set; }
		/// <summary>
		/// Specifies the environment variable in which the paths
		/// of all input files are stored.
		/// Not used if null.
		/// </summary>
		public string AllFilesEnvVar { get; set; }

		/// <summary>
		/// Contains an optional file path to the executable that is to be generated.
		/// </summary>
		public string ExecutableFile { get; set; }

		/// <summary>
		/// Specifies explicitly that the compiled program should not be executed.
		/// </summary>
		public bool NoExecution { get; set; }

		public CompilerOptions CompilerOptions { get; private set; }
	}
}
